@import (reference) './variable.less';

@switchPrefix: ant-switch;

@keyframes loading-rotate {
  100% {
    transform: rotate(1turn);
  }
}

.@{switchPrefix} {
  display: inline-block;
  vertical-align: middle;
  box-sizing: border-box;
  position: relative;
  align-self: center;
  min-width: @switch-width;
  height: @switch-height;
  border: @switch-border solid @COLOR_BORDER;
  border-radius: @switch-height * 0.5;
  background: @COLOR_WHITE;
  overflow: hidden;
  line-height: @switch-height;
  &-checked {
    background: @switch-fill;
    border-color: @switch-fill;
    .@{switchPrefix}-handle {
      left: calc(100% - (@switch-height - 2 * @switch-border));
    }
    .@{switchPrefix}-inner {
      color: @COLOR_WHITE;
      justify-content: flex-start;
    }
  }
  &-disabled {
    opacity: 0.4;
    pointer-events: none;
  }
  &-loading {
    pointer-events: none;
  }
  &-loading-icon {
    font-size: 20 * @rpx;
    animation: loading-rotate 1s linear infinite;
    color: @COLOR_BRAND1;
  }
  &-handle {
    display: flex;
    justify-content: center;
    align-items: center;
    width: @switch-height - 2 * @switch-border;
    height: @switch-height - 2 * @switch-border;
    border-radius: 50%;
    background: @COLOR_WHITE;
    position: absolute;
    top: 0;
    left: 0;
    transition: all 200ms;
    box-shadow: 0 0 2px 0 fade(@COLOR_WHITE_CHANGE_DARK, 20%),
      0 2px 11.5px 0 fade(@COLOR_WHITE_CHANGE_DARK, 8%),
      -1px 2px 2px 0 fade(@COLOR_WHITE_CHANGE_DARK, 10%);
  }
  &-inner {
    position: relative;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    height: 100%;
    color: @COLOR_TEXT_ASSIST;
    transition: margin 200ms;
    font-size: 30 * @rpx;
    padding: 0 14 * @rpx;
    min-width: 108 * @rpx;
    box-sizing: border-box;
    &:empty {
      display: none;
    }
  }

  &-small {
    min-width: @switch-width-small;
    height: @switch-height-small;
    border-radius: @switch-height-small * 0.5;
    .@{switchPrefix}-handle {
      width: @switch-height-small - 2 * @switch-border;
      height: @switch-height-small - 2 * @switch-border;
    }
    .@{switchPrefix}-inner {
      font-size: 16 * @rpx;
      padding: 0 10 * @rpx;
      min-width: 72 * @rpx;
    }
  }
  &-small&-checked {
    .@{switchPrefix}-handle {
      left: calc(100% - (@switch-height-small - 2 * @switch-border));
    }
  }

  &-x-small {
    min-width: @switch-width-x-small;
    height: @switch-height-x-small;
    border-radius: @switch-height-x-small * 0.5;
    .@{switchPrefix}-handle {
      width: @switch-height-x-small - 2 * @switch-border;
      height: @switch-height-x-small - 2 * @switch-border;
    }
    .@{switchPrefix}-inner {
      font-size: 10 * @rpx;
      padding: 0 6 * @rpx;
      min-width: 56 * @rpx;
    }
  }
  &-x-small&-checked {
    .@{switchPrefix}-handle {
      left: calc(100% - (@switch-height-x-small - 2 * @switch-border));
    }
  }
}
